import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

// 1. 定义一个 NotifierProvider
// 在 Riverpod 3.x 中，StateProvider 已被移除，使用 NotifierProvider 替代
class HelloWorldNotifier extends Notifier<String> {
  @override
  String build() => 'Hello World';

  void updateText(String newText) {
    state = newText;
  }
}

final helloWorldProvider = NotifierProvider<HelloWorldNotifier, String>(
  HelloWorldNotifier.new,
);

void main() {
  runApp(
    // 2. 为了让 Provider 能在整个应用中生效，我们需要用 "ProviderScope" 包裹整个应用。
    const ProviderScope(child: MyApp()));
}

// 3. 将 StatelessWidget 替换为 ConsumerWidget 来监听 Provider。
class MyApp extends ConsumerWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    // 4. 使用 ref.watch 来获取 Provider 的值
    final helloWorld = ref.watch(helloWorldProvider);

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Simple Riverpod Example')),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(helloWorld),
              const SizedBox(height: 20),
              ElevatedButton(
                onPressed: () {
                  // 5. 使用 ref.read 来获取 notifier，并调用方法修改状态
                  ref.read(helloWorldProvider.notifier).updateText('Hello Riverpod!');
                },
                child: const Text('改变文本'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
